package com.czkt.service.impl;

import com.czkt.domain.ErpSku;
import com.czkt.domain.ErpSpu;
import com.czkt.domain.ErpSpuAttr;
import com.czkt.domain.vo.SpuExcelVo;
import com.czkt.mapper.ErpSkuMapper;
import com.czkt.mapper.ErpSpuAttrMapper;
import com.czkt.mapper.ErpSpuMapper;
import com.czkt.service.IErpSpuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 主商品Service业务层处理
 *
 * @author ruoyi
 * @date 2024-04-26
 */
@Service
public class ErpSpuServiceImpl implements IErpSpuService {
    @Autowired
    private ErpSpuMapper erpSpuMapper;

    @Autowired
    private ErpSkuMapper erpSkuMapper;

    @Autowired
    ErpSpuAttrMapper erpSpuAttrMapper;

    /**
     * 查询主商品
     *
     * @param id 主商品主键
     * @return 主商品
     */
    @Override
    public ErpSpu selectErpSpuById(Long id) {
        return erpSpuMapper.selectErpSpuById(id);
    }

    /**
     * 查询主商品列表
     *
     * @param erpSpu 主商品
     * @return 主商品
     */
    @Override
    public List<ErpSpu> selectErpSpuList(ErpSpu erpSpu) {
        return erpSpuMapper.selectErpSpuList(erpSpu);
    }

    @Override
    public List<SpuExcelVo> selectSpuExcelVoList(ErpSpu erpSpu) {



        return erpSpuMapper.selectSpuExcelVoList(erpSpu);
    }

    /**
     * 新增主商品
     *
     * @param erpSpu 主商品
     * @return 结果
     */
    @Override
    @Transactional
    public int insertErpSpu(ErpSpu erpSpu, List<ErpSku> skuList, List<ErpSpuAttr> spuAttrs) {
        int result = 0;
        erpSpuMapper.insertErpSpu(erpSpu);

        for (ErpSku temp : skuList) {
            temp.setSpuId(erpSpu.getId());
            erpSkuMapper.insertErpSku(temp);
        }

        for (ErpSpuAttr temp : spuAttrs) {
            temp.setSpuId(erpSpu.getId());
            erpSpuAttrMapper.insertErpSpuAttr(temp);
        }


        result = 1;
        return result;


    }

    /**
     * 修改主商品
     *
     * @param erpSpu 主商品
     * @return 结果
     */
    @Override
    public int updateErpSpu(ErpSpu erpSpu) {
        return erpSpuMapper.updateErpSpu(erpSpu);
    }

    /**
     * 批量删除主商品
     *
     * @param ids 需要删除的主商品主键
     * @return 结果
     */
    @Override
    public int deleteErpSpuByIds(Long[] ids) {
        return erpSpuMapper.deleteErpSpuByIds(ids);
    }

    /**
     * 删除主商品信息
     *
     * @param id 主商品主键
     * @return 结果
     */
    @Override
    public int deleteErpSpuById(Long id) {
        return erpSpuMapper.deleteErpSpuById(id);
    }
}
